﻿namespace S.PurchaseAndSales.Read.Api.Extensions.Filter
{
    //public class UniversalAuthorizationFilter : IAsyncAuthorizationFilter
    //{
    //private readonly IMediator mediator;
    //private readonly IConfiguration Configuration;
    //private readonly ICustomJWTService customJWTService;

    //public UniversalAuthorizationFilter(IMediator mediator, IConfiguration configuration, ICustomJWTService customJWTService)
    //{
    //    this.mediator = mediator;
    //    this.Configuration = configuration;
    //    this.customJWTService = customJWTService;
    //}

    //public Task OnAuthorizationAsync(AuthorizationFilterContext context)
    //{
    //    string token = context.HttpContext.Request.Headers["Authorization"];
    //    if (string.IsNullOrEmpty(token))
    //    {
    //        // 返回一个表示令牌缺失的自定义响应
    //        context.HttpContext.Response.StatusCode = 401;
    //        context.HttpContext.Response.Headers.Add("Content-Type", "text/plain");
    //        context.HttpContext.Response.WriteAsync("Token is missing");
    //        return Task.CompletedTask;
    //    }
    //    string menuid = context.HttpContext.Request.Headers["menuid"];
    //    int Menuid = 0;
    //    if (!string.IsNullOrEmpty(menuid))
    //    {
    //        Menuid = int.Parse(menuid);
    //    }
    //    else
    //    {
    //        context.HttpContext.Response.StatusCode = 404;
    //        context.HttpContext.Response.Headers.Add("Content-Type", "text/plain");
    //        context.HttpContext.Response.WriteAsync("没有权限访问该地址");
    //        return Task.CompletedTask;
    //    }
    //    int uid = Convert.ToInt32(context.HttpContext.User.FindFirst(ClaimTypes.NameIdentifier)?.Value);

    //    var menulist = mediator.Send(new MenuGetCommand() { uid = uid }).Result;
    //    MenuListChildren foundNode = new MenuListChildren();
    //    if (menulist != null)
    //    {
    //        foundNode = FindNodeById(menulist, Menuid);
    //    }
    //    else
    //    {
    //        context.HttpContext.Response.StatusCode = 404;
    //        context.HttpContext.Response.Headers.Add("Content-Type", "text/plain");
    //        context.HttpContext.Response.WriteAsync("没有权限访问该地址");
    //        return Task.CompletedTask;
    //    }

    //    if (foundNode != null)
    //    {
    //        return Task.CompletedTask;
    //    }
    //    else
    //    {
    //        context.HttpContext.Response.StatusCode = 404;
    //        context.HttpContext.Response.Headers.Add("Content-Type", "text/plain");
    //        context.HttpContext.Response.WriteAsync("没有权限访问该地址");
    //        return Task.CompletedTask;
    //    }
    //}

    //public MenuListChildren FindNodeById(List<MenuListChildren> tree, int id)
    //{
    //    foreach (var node in tree)
    //    {
    //        if (node.Id == id)
    //        {
    //            return node;
    //        }

    //        if (node.Children != null && node.Children.Count > 0)
    //        {
    //            var foundNode = FindNodeById(node.Children, id);
    //            if (foundNode != null)
    //            {
    //                return foundNode;
    //            }
    //        }
    //    }

    //    return null;
    //}
    //}
}
